클린 코더
맨 처음에 제목을 들었을 때 밥 아저씨가 쓴 <<클린 코드>>와 큰 연관이 있을 거라고 생각했는데, 실제로는 그렇지 않았다. <<클린 코드>>를 읽지 않고도 편안한 마음으로 읽을 수 있는 책이다.
이 책은 프로 소프트웨어 개발자로써의 마음가짐과 자세를 알려주는 책이다. 개발자로 살아가면서 자기 자신은 어떻게 관리하고, 일정은 어떻게 추정하며, 기술적으로는 어떻게 행동하면 되는지 알 수 있다. 특히 이 책에서는 프로 정신을 굉장히 강조하는데, 책을 읽다보면 프로 개발자가 될 수 있을지, 자신은 프로답게 어떻게 행동해왔는지 반성하게 된다.
프로 개발자
이 책의 핵심은 프로 개발자이다. 로버트 마틴은 프로 개발자가 되는 방법에 대해 논하고 있다. 프로 개발자는 어떤 타이밍에 예라고 말하고, 아니라고 말할 타이밍에는 항상 아니라고 말할 수 있어야 하고, 어떻게 자신의 기술을 갈고 닦고, 테스트와 시간 관리는 어떻게 하는지 전체적으로 간략하게 짚어주고 있다.
책에 나온 내용을 간략히 이야기하면, 프로 개발자는 다음과 같다.
정직, 명예, 자기존중, 긍지가 바로 그 마음가짐이다. 이는 기술 장인이 되겠다는 막중한 책임을 기꺼이 짊어지겠다는 의지다. 그 책임은 일을 훌륭히 그리고 깔끔히 완수해야 한다는 책임이다. 원활히 의사소통하고 추정을 할 때 신뢰감을 줘야 한다는 것이다. 시간을 잘 관리하고 위섬 보상에 대해 힘든 결정을 감내하겠다는 책임이다.
하지만 책임지는 일은 무서운 일이다. 기술자라면 시스템과 프로젝트에 대해 관리자는 알기 힘든 깊은 지식을 알아야 한다. 그 지식을 가지고 행동으로 옮겨야 할 책임이 있다.
예, 아니오, 그리고 추정
프로그래머로써 밥 아저씨가 논한 다른 부분은 책에서도 많이 보았다. 테스트를 작성하고, 자신의 코드를 주의깊게 리펙토링하고, 연습을 하는 모든 일은 항상 마음 깊이 세겨두어야 하지만, 신선하게 다가오는 부분은 아니었다.
오히려 이 책에서 감명깊게 본 부분은 위의 세 챕터였다.
밥 아저씨는 프로 개발자라면 아니라고 말할 수 있는 상황에는 무조건 아니라고 이야기 할 수 있어야 한다고 한다. 즉, 다음과 같이 이야기한다.
하지만 프로는 아니라고 말해야 마땅하다. 사실, 좋은 관리자라면 아니라고 말하는 배짱을 가진 사람을 꼭 가지고 싶어한다. 아니라고 말하는 일이야말로 작업을 완료하는 유일한 길이다.
물론 무조건 아니라고 말하는 건 아니다. 예라고 말할 수 있게 노력한다. 그러나, 불가능하다고 생각되는 일은 아니라고 반드시 이야기하고 타협하지 않는다.
개발을 하면서 생기는 대부분의 의견 충돌과 난관은 추정에서 발생하는 것 같다. 나는 예민한 성격이다. 추정치에서 일이 밀리면 편안한 마음으로 집에서 쉴 수 없다. 어떻게든 추정에 맞추기 위해 노력하는데…
그렇게 하면 야근도 하게 되고, 주말출근도 하게 될 때도 있다. 즉, 추정이 틀린 것이다. 이 책에서는 추정은 확률분포이므로, 좀 더 세밀하게 추정치를 공유해야 할 필요가 있다고 한다.
개발자
나는 막 시작하는 개발자지만, 앞에서 발생하는 상황을 다 겪어보았다. 아니라고 말할 수 없어서, 말하기 어려워서 예라고 말해본 적도 있고, 추정에 실패하여 밤늦게까지 야근해도 출시일을 맞추지 못한 적도 있었다. 오히려 야근을 하는게 진짜 개발자라고 느낀 적도 있었다. 개발자라면 프로 정신을 가져야지…라는 생각이었다.
나는 아니라고 이야기했어야 했을까? 이 방식으로는 지금 구조상 절대로 시간을 맞출 수 없습니다. 야근을 시키셔도 안됩니다. 라고 이야기할 수 있어야 했을까?
잘 모르겠다. 그러나 이 책에서 한 이야기가 옳은 방향이라는 생각은 든다. 방향이 옳다면 언젠가는 목적지에 도달할 거라는 생각이 든다.
이 책은 자신이 행동하는 방향이 옳은지, 원칙을 정확히 지키고 있는지 옆에 두며 살피기 좋은 책이라는 생각이 든다. 오래 두고 볼 책이다.